{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "e415414b-5da4-460b-a7e4-617fe22063db",
   "metadata": {},
   "source": [
    "# Forecasting Time Series - In Depth\n",
    "\n",
    "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/autogluon/autogluon/blob/master/docs/tutorials/timeseries/forecasting-indepth.ipynb)\n",
    "[![Open In SageMaker Studio Lab](https://studiolab.sagemaker.aws/studiolab.svg)](https://studiolab.sagemaker.aws/import/github/autogluon/autogluon/blob/master/docs/tutorials/timeseries/forecasting-indepth.ipynb)\n",
    "\n",
    "\n",
    "This tutorial provides an in-depth overview of the time series forecasting capabilities in AutoGluon.\n",
    "Specifically, we will cover:\n",
    "\n",
    "- What is probabilistic time series forecasting?\n",
    "- Forecasting time series with additional information\n",
    "- What data format is expected by `TimeSeriesPredictor`?\n",
    "- How to evaluate forecast accuracy?\n",
    "- Which forecasting models are available in AutoGluon?\n",
    "- What functionality does `TimeSeriesPredictor` offer?\n",
    "    - Basic configuration with `presets` and `time_limit`\n",
    "    - Manually selecting what models to train\n",
    "    - Hyperparameter tuning\n",
    "\n",
    "This tutorial assumes that you are familiar with the contents of [Forecasting Time Series - Quick Start](forecasting-quick-start.ipynb).\n",
    "\n",
    "## What is probabilistic time series forecasting?\n",
    "A time series is a sequence of measurements made at regular intervals.\n",
    "The main objective of time series forecasting is to predict the future values of a time series given the past observations.\n",
    "A typical example of this task is demand forecasting.\n",
    "For example, we can represent the number of daily purchases of a certain product as a time series.\n",
    "The goal in this case could be predicting the demand for each of the next 14 days (i.e., the forecast horizon) given the historical purchase data.\n",
    "In AutoGluon, the `prediction_length` argument of the `TimeSeriesPredictor` determines the length of the forecast horizon.\n",
    "\n",
    "![Main goal of forecasting is to predict the future values of a time series given the past observations.](https://autogluon-timeseries-datasets.s3.us-west-2.amazonaws.com/public/figures/forecasting-indepth1.png)\n",
    "\n",
    "The objective of forecasting could be to predict future values of a given time series, as well as establishing prediction intervals within which the future values will likely lie.\n",
    "In AutoGluon, the `TimeSeriesPredictor` generates two types of forecasts:\n",
    "\n",
    "- **mean forecast** represents the expected value of the time series at each time step in the forecast horizon.\n",
    "- **quantile forecast** represents the quantiles of the forecast distribution.\n",
    "For example, if the `0.1` quantile (also known as P10, or the 10th percentile) is equal to `x`, it means that the time series value is predicted to be below `x` 10% of the time. As another example, the `0.5` quantile (P50) corresponds to the median forecast.\n",
    "Quantiles can be used to reason about the range of possible outcomes.\n",
    "For instance, by the definition of the quantiles, the time series is predicted to be between the P10 and P90 values with 80% probability.\n",
    "\n",
    "\n",
    "![Mean and quantile (P10 and P90) forecasts.](https://autogluon-timeseries-datasets.s3.us-west-2.amazonaws.com/public/figures/forecasting-indepth2.png)\n",
    "\n",
    "By default, the `TimeSeriesPredictor` outputs the quantiles `[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]`. Custom quantiles can be provided with the `quantile_levels` argument\n",
    "\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(quantile_levels=[0.05, 0.5, 0.95])\n",
    "```\n",
    "\n",
    "## Forecasting time series with additional information\n",
    "In real-world forecasting problems we often have access to additional information, beyond just the raw time series values.\n",
    "AutoGluon supports two types of such additional information: static features and time-varying covariates.\n",
    "\n",
    "### Static features\n",
    "Static features are the time-independent attributes (metadata) of a time series.\n",
    "These may include information such as:\n",
    "\n",
    "- location, where the time series was recorded (country, state, city)\n",
    "- fixed properties of a product (brand name, color, size, weight)\n",
    "- store ID or product ID\n",
    "\n",
    "Providing this information may, for instance, help forecasting models generate similar demand forecasts for stores located in the same city.\n",
    "\n",
    "In AutoGluon, static features are stored as an attribute of a `TimeSeriesDataFrame` object.\n",
    "As an example, let's have a look at the M4 Daily dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "aa00faab-252f-44c9-b8f7-57131aa8251c",
   "metadata": {
    "tags": [
     "remove-cell"
    ]
   },
   "outputs": [],
   "source": [
    "!pip install autogluon.timeseries\n",
    "!pip uninstall torchaudio torchvision torchtext -y  # fix incompatible torchaudio/torchvision versions on Colab\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9e18ec03-e804-4bba-9cc2-9923eaf2cce7",
   "metadata": {
    "tags": [
     "remove-cell"
    ]
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(action=\"ignore\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b75c8851-1fb8-4464-9e13-e8124e4b7fa2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from autogluon.timeseries import TimeSeriesDataFrame, TimeSeriesPredictor\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "2aaa2954-42ee-466f-8db2-2c0bf3678efd",
   "metadata": {},
   "source": [
    "We download a subset of 100 time series from the M4 Daily dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f4f1d173-1fe6-4616-a55a-09a914e4ae57",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>D1737</td>\n",
       "      <td>1995-05-23</td>\n",
       "      <td>1900.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>D1737</td>\n",
       "      <td>1995-05-24</td>\n",
       "      <td>1877.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>D1737</td>\n",
       "      <td>1995-05-25</td>\n",
       "      <td>1873.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>D1737</td>\n",
       "      <td>1995-05-26</td>\n",
       "      <td>1859.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>D1737</td>\n",
       "      <td>1995-05-27</td>\n",
       "      <td>1876.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  item_id   timestamp  target\n",
       "0   D1737  1995-05-23  1900.0\n",
       "1   D1737  1995-05-24  1877.0\n",
       "2   D1737  1995-05-25  1873.0\n",
       "3   D1737  1995-05-26  1859.0\n",
       "4   D1737  1995-05-27  1876.0"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv(\"https://autogluon.s3.amazonaws.com/datasets/timeseries/m4_daily_subset/train.csv\")\n",
    "df.head()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "94f6bac4-3eb3-4ba6-a051-46077dcc1e17",
   "metadata": {},
   "source": [
    "We also load the corresponding static features.\n",
    "In the M4 Daily dataset, there is a single categorical static feature that denotes the domain of origin for each time series.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "191776df-83a3-47a6-b6c2-6bd7c2383d6b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_id</th>\n",
       "      <th>domain</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>D1737</td>\n",
       "      <td>Industry</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>D1843</td>\n",
       "      <td>Industry</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>D2246</td>\n",
       "      <td>Finance</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>D909</td>\n",
       "      <td>Micro</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>D1345</td>\n",
       "      <td>Micro</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  item_id    domain\n",
       "0   D1737  Industry\n",
       "1   D1843  Industry\n",
       "2   D2246   Finance\n",
       "3    D909     Micro\n",
       "4   D1345     Micro"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "static_features_df = pd.read_csv(\"https://autogluon.s3.amazonaws.com/datasets/timeseries/m4_daily_subset/metadata.csv\")\n",
    "static_features_df.head()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3c9c4533",
   "metadata": {},
   "source": [
    "AutoGluon expects static features as a pandas.DataFrame object. The `item_id` column indicates which item (=individual time series) in `df` each row of `static_features` corresponds to.\n",
    "\n",
    "We can now create a `TimeSeriesDataFrame` that contains both the time series values and the static features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "cd796511",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">D1737</th>\n",
       "      <th>1995-05-23</th>\n",
       "      <td>1900.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-24</th>\n",
       "      <td>1877.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-25</th>\n",
       "      <td>1873.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-26</th>\n",
       "      <td>1859.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-27</th>\n",
       "      <td>1876.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    target\n",
       "item_id timestamp         \n",
       "D1737   1995-05-23  1900.0\n",
       "        1995-05-24  1877.0\n",
       "        1995-05-25  1873.0\n",
       "        1995-05-26  1859.0\n",
       "        1995-05-27  1876.0"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data = TimeSeriesDataFrame.from_data_frame(\n",
    "    df,\n",
    "    id_column=\"item_id\",\n",
    "    timestamp_column=\"timestamp\",\n",
    "    static_features_df=static_features_df,\n",
    ")\n",
    "train_data.head()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bfc8ba1a",
   "metadata": {},
   "source": [
    "We can validate that `train_data` now also includes the static features using the `.static_features` attribute"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "5c413a5e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>domain</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>D1737</th>\n",
       "      <td>Industry</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D1843</th>\n",
       "      <td>Industry</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D2246</th>\n",
       "      <td>Finance</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D909</th>\n",
       "      <td>Micro</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D1345</th>\n",
       "      <td>Micro</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           domain\n",
       "item_id          \n",
       "D1737    Industry\n",
       "D1843    Industry\n",
       "D2246     Finance\n",
       "D909        Micro\n",
       "D1345       Micro"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.static_features.head()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "b7688edf-21ba-4466-afdf-beff0ef23fb7",
   "metadata": {},
   "source": [
    "Alternatively, we can attach static features to an existing `TimeSeriesDataFrame` by assigning the `.static_features` attribute"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d57f22ac",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data.static_features = static_features_df\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3461dd93",
   "metadata": {},
   "source": [
    "\n",
    "If `static_features` doesn't contain some `item_id`s that are present in `train_data`, an exception will be raised.\n",
    "\n",
    "Now, when we fit the predictor, all models that support static features will automatically use the static features included in `train_data`.\n",
    "\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(prediction_length=14).fit(train_data)\n",
    "```\n",
    "\n",
    "```\n",
    "...\n",
    "Following types of static features have been inferred:\n",
    "\tcategorical: ['domain']\n",
    "\tcontinuous (float): []\n",
    "...\n",
    "```\n",
    "\n",
    "This message confirms that column `'domain'` was interpreted as a categorical feature.\n",
    "In general, AutoGluon-TimeSeries supports two types of static features:\n",
    "\n",
    "- `categorical`: columns of dtype `object`, `string` and `category` are interpreted as discrete categories\n",
    "- `continuous`: columns of dtype `int` and `float` are interpreted as continuous (real-valued) numbers\n",
    "- columns with other dtypes are ignored\n",
    "\n",
    "To override this logic, we need to manually change the columns dtype.\n",
    "For example, suppose the static features data frame contained an integer-valued column `\"store_id\"`.\n",
    "\n",
    "```python\n",
    "train_data.static_features[\"store_id\"] = list(range(len(train_data.item_ids)))\n",
    "```\n",
    "\n",
    "By default, this column will be interpreted as a continuous number.\n",
    "We can force AutoGluon to interpret it a a categorical feature by changing the dtype to `category`.\n",
    "\n",
    "```python\n",
    "train_data.static_features[\"store_id\"] = train_data.static_features[\"store_id\"].astype(\"category\")\n",
    "```\n",
    "\n",
    "**Note:** If training data contained static features, the predictor will expect that data passed to `predictor.predict()`, `predictor.leaderboard()`, and `predictor.evaluate()` also includes static features with the same column names and data types.\n",
    "\n",
    "\n",
    "### Time-varying covariates\n",
    "Covariates are the time-varying features that may influence the target time series.\n",
    "They are sometimes also referred to as dynamic features, exogenous regressors, or related time series.\n",
    "AutoGluon supports two types of covariates:\n",
    "\n",
    "- *known* covariates that are known for the entire forecast horizon, such as\n",
    "    - holidays\n",
    "    - day of the week, month, year\n",
    "    - promotions\n",
    "\n",
    "- *past* covariates that are only known up to the start of the forecast horizon, such as\n",
    "    - sales of other products\n",
    "    - temperature, precipitation\n",
    "    - transformed target time series\n",
    "\n",
    "\n",
    "![Target time series with one past covariate and one known covariate.](https://autogluon-timeseries-datasets.s3.us-west-2.amazonaws.com/public/figures/forecasting-indepth5.png)\n",
    "\n",
    "In AutoGluon, both `known_covariates` and `past_covariates` are stored as additional columns in the `TimeSeriesDataFrame`.\n",
    "\n",
    "We will again use the M4 Daily dataset as an example and generate both types of covariates:\n",
    "\n",
    "- a `past_covariate` equal to the logarithm of the target time series:\n",
    "- a `known_covariate` that equals to 1 if a given day is a weekend, and 0 otherwise."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "26472067-a3d3-44fb-be77-82b173bfac1c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>target</th>\n",
       "      <th>log_target</th>\n",
       "      <th>weekend</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">D1737</th>\n",
       "      <th>1995-05-23</th>\n",
       "      <td>1900.0</td>\n",
       "      <td>7.549609</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-24</th>\n",
       "      <td>1877.0</td>\n",
       "      <td>7.537430</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-25</th>\n",
       "      <td>1873.0</td>\n",
       "      <td>7.535297</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-26</th>\n",
       "      <td>1859.0</td>\n",
       "      <td>7.527794</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-27</th>\n",
       "      <td>1876.0</td>\n",
       "      <td>7.536897</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    target  log_target  weekend\n",
       "item_id timestamp                              \n",
       "D1737   1995-05-23  1900.0    7.549609      0.0\n",
       "        1995-05-24  1877.0    7.537430      0.0\n",
       "        1995-05-25  1873.0    7.535297      0.0\n",
       "        1995-05-26  1859.0    7.527794      0.0\n",
       "        1995-05-27  1876.0    7.536897      1.0"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "train_data[\"log_target\"] = np.log(train_data[\"target\"])\n",
    "\n",
    "WEEKEND_INDICES = [5, 6]\n",
    "timestamps = train_data.index.get_level_values(\"timestamp\")\n",
    "train_data[\"weekend\"] = timestamps.weekday.isin(WEEKEND_INDICES).astype(float)\n",
    "\n",
    "train_data.head()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "b8a3dc09-c2b1-4845-a56b-66a7d8906909",
   "metadata": {},
   "source": [
    "When creating the TimeSeriesPredictor, we specify that the column `\"target\"` is our prediction target, and the\n",
    "column `\"weekend\"` contains a covariate that will be known at prediction time.\n",
    "\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(\n",
    "    prediction_length=14,\n",
    "    target=\"target\",\n",
    "    known_covariates_names=[\"weekend\"],\n",
    ").fit(train_data)\n",
    "```\n",
    "\n",
    "Predictor will automatically interpret the remaining columns (except target and known covariates) as past covariates.\n",
    "This information is logged during fitting:\n",
    "\n",
    "```\n",
    "...\n",
    "Provided dataset contains following columns:\n",
    "\ttarget:           'target'\n",
    "\tknown covariates: ['weekend']\n",
    "\tpast covariates:  ['log_target']\n",
    "...\n",
    "```\n",
    "\n",
    "Finally, to make predictions, we generate the known covariates for the forecast horizon"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "876427f0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>weekend</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">D1737</th>\n",
       "      <th>1997-05-28</th>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997-05-29</th>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997-05-30</th>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997-05-31</th>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997-06-01</th>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    weekend\n",
       "item_id timestamp          \n",
       "D1737   1997-05-28      0.0\n",
       "        1997-05-29      0.0\n",
       "        1997-05-30      0.0\n",
       "        1997-05-31      1.0\n",
       "        1997-06-01      1.0"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from autogluon.timeseries.utils.forecast import get_forecast_horizon_index_ts_dataframe\n",
    "\n",
    "future_index = get_forecast_horizon_index_ts_dataframe(train_data, prediction_length=14)\n",
    "future_timestamps = future_index.get_level_values(\"timestamp\")\n",
    "known_covariates = pd.DataFrame(index=future_index)\n",
    "known_covariates[\"weekend\"] = future_timestamps.weekday.isin(WEEKEND_INDICES).astype(float)\n",
    "\n",
    "known_covariates.head()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "8b1cc93e-dc00-4475-9837-da8d0db5e2ef",
   "metadata": {},
   "source": [
    "Note that `known_covariates` must satisfy the following conditions:\n",
    "\n",
    "- The columns must include all columns listed in ``predictor.known_covariates_names``\n",
    "- The ``item_id`` index must include all item ids present in ``train_data``\n",
    "- The ``timestamp`` index must include the values for ``prediction_length`` many time steps into the future from the end of each time series in ``train_data``\n",
    "\n",
    "If `known_covariates` contain more information than necessary (e.g., contain additional columns, item_ids, or timestamps),\n",
    "AutoGluon will automatically select the necessary rows and columns.\n",
    "\n",
    "Finally, we pass the `known_covariates` to the `predict` function to generate predictions\n",
    "\n",
    "```python\n",
    "predictor.predict(train_data, known_covariates=known_covariates)\n",
    "```\n",
    "\n",
    "The list of models that support static features and covariates is available in [Forecasting Model Zoo](forecasting-model-zoo.md)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e45f6ad",
   "metadata": {},
   "source": [
    "### Holidays\n",
    "Another popular example of `known_covariates` are holiday features. In this section we describe how to add holiday features to a time series dataset and use them in AutoGluon.\n",
    "\n",
    "First, we need to define a dictionary with dates in `datetime.date` format as keys and holiday names as values. \n",
    "We can easily generate such a dictionary using the [`holidays`](https://pypi.org/project/holidays/) Python package."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1f205c02",
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install holidays"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "147dd5c9",
   "metadata": {},
   "source": [
    "Here we use German holidays for demonstration purposes only. Make sure to define a holiday calendar that matches your country/region!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "73d706de",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1990-10-03             German Unity Day\n",
       "1990-11-21    Repentance and Prayer Day\n",
       "1990-12-25                Christmas Day\n",
       "1990-12-26      Second Day of Christmas\n",
       "1991-01-01               New Year's Day\n",
       "dtype: object"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import holidays\n",
    "\n",
    "timestamps = train_data.index.get_level_values(\"timestamp\")\n",
    "country_holidays = holidays.country_holidays(\n",
    "    country=\"DE\",  # make sure to select the correct country/region!\n",
    "    # Add + 1 year to make sure that holidays are initialized for the forecast horizon\n",
    "    years=range(timestamps.min().year, timestamps.max().year + 1),\n",
    ")\n",
    "# Convert dict to pd.Series for pretty visualization\n",
    "pd.Series(country_holidays).sort_index().head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49e5709d",
   "metadata": {},
   "source": [
    "Alternatively, we can manually define a dictionary with custom holidays."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "a82bc60d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import datetime\n",
    "\n",
    "# must cover the full train time range + forecast horizon\n",
    "custom_holidays = {\n",
    "    datetime.date(1995, 1, 29): \"Superbowl\",\n",
    "    datetime.date(1995, 11, 29): \"Black Friday\",\n",
    "    datetime.date(1996, 1, 28): \"Superbowl\",\n",
    "    datetime.date(1996, 11, 29): \"Black Friday\",\n",
    "    # ... \n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a4e6eca1",
   "metadata": {},
   "source": [
    "Next, we define a method that adds holiday features as columns to a `TimeSeriesDataFrame`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "c8533c18",
   "metadata": {},
   "outputs": [],
   "source": [
    "def add_holiday_features(\n",
    "    ts_df: TimeSeriesDataFrame, \n",
    "    country_holidays: dict,\n",
    "    include_individual_holidays: bool = True,\n",
    "    include_holiday_indicator: bool = True,\n",
    ") -> TimeSeriesDataFrame:\n",
    "    \"\"\"Add holiday indicator columns to a TimeSeriesDataFrame.\"\"\"\n",
    "    ts_df = ts_df.copy()\n",
    "    timestamps = ts_df.index.get_level_values(\"timestamp\")\n",
    "    country_holidays_df = pd.get_dummies(pd.Series(country_holidays)).astype(float)\n",
    "    holidays_df = country_holidays_df.reindex(timestamps.date).fillna(0)\n",
    "    if include_individual_holidays:\n",
    "        ts_df[holidays_df.columns] = holidays_df.values\n",
    "    if include_holiday_indicator:\n",
    "        ts_df[\"Holiday\"] = holidays_df.max(axis=1).values\n",
    "    return ts_df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2066d120",
   "metadata": {},
   "source": [
    "We can create a single indicator feature for all holidays."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "569141ab",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>target</th>\n",
       "      <th>log_target</th>\n",
       "      <th>weekend</th>\n",
       "      <th>Holiday</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">D1737</th>\n",
       "      <th>1995-05-23</th>\n",
       "      <td>1900.0</td>\n",
       "      <td>7.549609</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-24</th>\n",
       "      <td>1877.0</td>\n",
       "      <td>7.537430</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-25</th>\n",
       "      <td>1873.0</td>\n",
       "      <td>7.535297</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-26</th>\n",
       "      <td>1859.0</td>\n",
       "      <td>7.527794</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-27</th>\n",
       "      <td>1876.0</td>\n",
       "      <td>7.536897</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    target  log_target  weekend  Holiday\n",
       "item_id timestamp                                       \n",
       "D1737   1995-05-23  1900.0    7.549609      0.0      0.0\n",
       "        1995-05-24  1877.0    7.537430      0.0      0.0\n",
       "        1995-05-25  1873.0    7.535297      0.0      1.0\n",
       "        1995-05-26  1859.0    7.527794      0.0      0.0\n",
       "        1995-05-27  1876.0    7.536897      1.0      0.0"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "add_holiday_features(train_data, country_holidays, include_individual_holidays=False).head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eeda2a50",
   "metadata": {},
   "source": [
    "Or represent each holiday with a separate feature."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "5a813e80",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>target</th>\n",
       "      <th>log_target</th>\n",
       "      <th>weekend</th>\n",
       "      <th>Ascension Day</th>\n",
       "      <th>Ascension Day; Labor Day</th>\n",
       "      <th>Christmas Day</th>\n",
       "      <th>Easter Monday</th>\n",
       "      <th>German Unity Day</th>\n",
       "      <th>Good Friday</th>\n",
       "      <th>Labor Day</th>\n",
       "      <th>New Year's Day</th>\n",
       "      <th>Reformation Day</th>\n",
       "      <th>Repentance and Prayer Day</th>\n",
       "      <th>Second Day of Christmas</th>\n",
       "      <th>Whit Monday</th>\n",
       "      <th>Holiday</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">D1737</th>\n",
       "      <th>1995-05-23</th>\n",
       "      <td>1900.0</td>\n",
       "      <td>7.549609</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-24</th>\n",
       "      <td>1877.0</td>\n",
       "      <td>7.537430</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-25</th>\n",
       "      <td>1873.0</td>\n",
       "      <td>7.535297</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-26</th>\n",
       "      <td>1859.0</td>\n",
       "      <td>7.527794</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-05-27</th>\n",
       "      <td>1876.0</td>\n",
       "      <td>7.536897</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    target  log_target  weekend  Ascension Day  \\\n",
       "item_id timestamp                                                \n",
       "D1737   1995-05-23  1900.0    7.549609      0.0            0.0   \n",
       "        1995-05-24  1877.0    7.537430      0.0            0.0   \n",
       "        1995-05-25  1873.0    7.535297      0.0            1.0   \n",
       "        1995-05-26  1859.0    7.527794      0.0            0.0   \n",
       "        1995-05-27  1876.0    7.536897      1.0            0.0   \n",
       "\n",
       "                    Ascension Day; Labor Day  Christmas Day  Easter Monday  \\\n",
       "item_id timestamp                                                            \n",
       "D1737   1995-05-23                       0.0            0.0            0.0   \n",
       "        1995-05-24                       0.0            0.0            0.0   \n",
       "        1995-05-25                       0.0            0.0            0.0   \n",
       "        1995-05-26                       0.0            0.0            0.0   \n",
       "        1995-05-27                       0.0            0.0            0.0   \n",
       "\n",
       "                    German Unity Day  Good Friday  Labor Day  New Year's Day  \\\n",
       "item_id timestamp                                                              \n",
       "D1737   1995-05-23               0.0          0.0        0.0             0.0   \n",
       "        1995-05-24               0.0          0.0        0.0             0.0   \n",
       "        1995-05-25               0.0          0.0        0.0             0.0   \n",
       "        1995-05-26               0.0          0.0        0.0             0.0   \n",
       "        1995-05-27               0.0          0.0        0.0             0.0   \n",
       "\n",
       "                    Reformation Day  Repentance and Prayer Day  \\\n",
       "item_id timestamp                                                \n",
       "D1737   1995-05-23              0.0                        0.0   \n",
       "        1995-05-24              0.0                        0.0   \n",
       "        1995-05-25              0.0                        0.0   \n",
       "        1995-05-26              0.0                        0.0   \n",
       "        1995-05-27              0.0                        0.0   \n",
       "\n",
       "                    Second Day of Christmas  Whit Monday  Holiday  \n",
       "item_id timestamp                                                  \n",
       "D1737   1995-05-23                      0.0          0.0      0.0  \n",
       "        1995-05-24                      0.0          0.0      0.0  \n",
       "        1995-05-25                      0.0          0.0      1.0  \n",
       "        1995-05-26                      0.0          0.0      0.0  \n",
       "        1995-05-27                      0.0          0.0      0.0  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data_with_holidays = add_holiday_features(train_data, country_holidays)\n",
    "train_data_with_holidays.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b52f4e02",
   "metadata": {},
   "source": [
    "Remember to add the names of holiday features as `known_covariates_names` when creating `TimeSeriesPredictor`.\n",
    "\n",
    "```python\n",
    "holiday_columns = train_data_with_holidays.columns.difference(train_data.columns)\n",
    "predictor = TimeSeriesPredictor(..., known_covariates_names=holiday_columns).fit(train_data_with_holidays, ...)\n",
    "```\n",
    "\n",
    "At prediction time, we need to provide future holiday values as `known_covariates`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5d63cbb8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Ascension Day</th>\n",
       "      <th>Ascension Day; Labor Day</th>\n",
       "      <th>Christmas Day</th>\n",
       "      <th>Easter Monday</th>\n",
       "      <th>German Unity Day</th>\n",
       "      <th>Good Friday</th>\n",
       "      <th>Labor Day</th>\n",
       "      <th>New Year's Day</th>\n",
       "      <th>Reformation Day</th>\n",
       "      <th>Repentance and Prayer Day</th>\n",
       "      <th>Second Day of Christmas</th>\n",
       "      <th>Whit Monday</th>\n",
       "      <th>Holiday</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">D1737</th>\n",
       "      <th>1997-05-28 12:00:00</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997-05-29 12:00:00</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997-05-30 12:00:00</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997-05-31 12:00:00</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997-06-01 12:00:00</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                             Ascension Day  Ascension Day; Labor Day  \\\n",
       "item_id timestamp                                                      \n",
       "D1737   1997-05-28 12:00:00            0.0                       0.0   \n",
       "        1997-05-29 12:00:00            0.0                       0.0   \n",
       "        1997-05-30 12:00:00            0.0                       0.0   \n",
       "        1997-05-31 12:00:00            0.0                       0.0   \n",
       "        1997-06-01 12:00:00            0.0                       0.0   \n",
       "\n",
       "                             Christmas Day  Easter Monday  German Unity Day  \\\n",
       "item_id timestamp                                                             \n",
       "D1737   1997-05-28 12:00:00            0.0            0.0               0.0   \n",
       "        1997-05-29 12:00:00            0.0            0.0               0.0   \n",
       "        1997-05-30 12:00:00            0.0            0.0               0.0   \n",
       "        1997-05-31 12:00:00            0.0            0.0               0.0   \n",
       "        1997-06-01 12:00:00            0.0            0.0               0.0   \n",
       "\n",
       "                             Good Friday  Labor Day  New Year's Day  \\\n",
       "item_id timestamp                                                     \n",
       "D1737   1997-05-28 12:00:00          0.0        0.0             0.0   \n",
       "        1997-05-29 12:00:00          0.0        0.0             0.0   \n",
       "        1997-05-30 12:00:00          0.0        0.0             0.0   \n",
       "        1997-05-31 12:00:00          0.0        0.0             0.0   \n",
       "        1997-06-01 12:00:00          0.0        0.0             0.0   \n",
       "\n",
       "                             Reformation Day  Repentance and Prayer Day  \\\n",
       "item_id timestamp                                                         \n",
       "D1737   1997-05-28 12:00:00              0.0                        0.0   \n",
       "        1997-05-29 12:00:00              0.0                        0.0   \n",
       "        1997-05-30 12:00:00              0.0                        0.0   \n",
       "        1997-05-31 12:00:00              0.0                        0.0   \n",
       "        1997-06-01 12:00:00              0.0                        0.0   \n",
       "\n",
       "                             Second Day of Christmas  Whit Monday  Holiday  \n",
       "item_id timestamp                                                           \n",
       "D1737   1997-05-28 12:00:00                      0.0          0.0      0.0  \n",
       "        1997-05-29 12:00:00                      0.0          0.0      0.0  \n",
       "        1997-05-30 12:00:00                      0.0          0.0      0.0  \n",
       "        1997-05-31 12:00:00                      0.0          0.0      0.0  \n",
       "        1997-06-01 12:00:00                      0.0          0.0      0.0  "
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "future_index = get_forecast_horizon_index_ts_dataframe(train_data, prediction_length=14)\n",
    "future_timestamps = future_index.get_level_values(\"timestamp\")\n",
    "known_covariates = add_holiday_features(pd.DataFrame(index=future_index), country_holidays)\n",
    "known_covariates.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1c3d7e7d",
   "metadata": {},
   "source": [
    "```python\n",
    "predictions = predictor.predict(train_data_with_holidays, known_covariates=known_covariates)\n",
    "```"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "fd51f9a2",
   "metadata": {},
   "source": [
    "## What data format is expected by `TimeSeriesPredictor`?\n",
    "\n",
    "AutoGluon expects that at least some time series in the training data are long enough to generate an internal validation set.\n",
    "\n",
    "This means, at least some time series in `train_data` must have length `>= max(prediction_length + 1, 5) + prediction_length` when training with default settings\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(prediction_length=prediction_length).fit(train_data)\n",
    "```\n",
    "\n",
    "If you use advanced configuration options, such as following,\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(prediction_length=prediction_length).fit(train_data, num_val_windows=num_val_windows, val_step_size=val_step_size)\n",
    "```\n",
    "then at least some time series in `train_data` must have length `>= max(prediction_length + 1, 5) + prediction_length + (num_val_windows - 1) * val_step_size`.\n",
    "\n",
    "Note that all time series in the dataset can have different lengths.\n",
    "\n",
    "\n",
    "### Handling irregular data and missing values \n",
    "In some applications, like finance, data often comes with irregular measurements (e.g., no stock price is available for weekends or holidays) or missing values.\n",
    "\n",
    "Here is an example of a dataset with an irregular time index:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1f7cbfd4-bdbd-4b4a-86b7-bba7d038ee51",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">0</th>\n",
       "      <th>2022-01-01</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-02</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-04</th>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">1</th>\n",
       "      <th>2022-01-01</th>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-04</th>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    target\n",
       "item_id timestamp         \n",
       "0       2022-01-01       1\n",
       "        2022-01-02       2\n",
       "        2022-01-04       3\n",
       "1       2022-01-01       4\n",
       "        2022-01-04       5"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_irregular = TimeSeriesDataFrame(\n",
    "    pd.DataFrame(\n",
    "        {\n",
    "            \"item_id\": [0, 0, 0, 1, 1],\n",
    "            \"timestamp\": [\"2022-01-01\", \"2022-01-02\", \"2022-01-04\", \"2022-01-01\", \"2022-01-04\"],\n",
    "            \"target\": [1, 2, 3, 4, 5],\n",
    "        }\n",
    "    )\n",
    ")\n",
    "df_irregular\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "42cb2316",
   "metadata": {},
   "source": [
    "In such case, you can specify the desired frequency when creating the predictor using the `freq` argument.\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(..., freq=\"D\").fit(df_irregular)\n",
    "```\n",
    "Here we choose `freq=\"D\"` to indicate that the filled index must have a daily frequency\n",
    "(see [other possible choices in pandas documentation](https://pandas.pydata.org/docs/user_guide/timeseries.html#timeseries-offset-aliases)).\n",
    "\n",
    "AutoGluon will automatically convert the irregular data into daily frequency and fill the missing values."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "7c3d3b86-1348-4b74-a05d-c80cb403bde6",
   "metadata": {},
   "source": [
    "--------\n",
    "Alternatively, we can manually fill the gaps in the time index using the method [TimeSeriesDataFrame.convert_frequency()](../../api/autogluon.timeseries.TimeSeriesDataFrame.convert_frequency.rst)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4e7f0ab1-a056-4b5d-a912-1a1008044544",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">0</th>\n",
       "      <th>2022-01-01</th>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-02</th>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-03</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-04</th>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">1</th>\n",
       "      <th>2022-01-01</th>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-02</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-03</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-04</th>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    target\n",
       "item_id timestamp         \n",
       "0       2022-01-01     1.0\n",
       "        2022-01-02     2.0\n",
       "        2022-01-03     NaN\n",
       "        2022-01-04     3.0\n",
       "1       2022-01-01     4.0\n",
       "        2022-01-02     NaN\n",
       "        2022-01-03     NaN\n",
       "        2022-01-04     5.0"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_regular = df_irregular.convert_frequency(freq=\"D\")\n",
    "df_regular\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "67d16c86-b327-43f5-9a34-b4250d353287",
   "metadata": {},
   "source": [
    "We can verify that the index is now regular and has a daily frequency"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "50c58d1b-445d-4a92-a16e-55fd0b783953",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data has frequency 'D'\n"
     ]
    }
   ],
   "source": [
    "print(f\"Data has frequency '{df_regular.freq}'\")\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "8b3c9bdd-095d-4430-966d-a17e3989a789",
   "metadata": {},
   "source": [
    "However, now the data contains missing values represented by `NaN`.\n",
    "To fill the NaNs, we use the method [TimeSeriesDataFrame.fill_missing_values()](../../api/autogluon.timeseries.TimeSeriesDataFrame.fill_missing_values.rst) that implements various imputation strategies."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1440ea27-ff0e-4cda-90a2-0f5021f78514",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">0</th>\n",
       "      <th>2022-01-01</th>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-02</th>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-03</th>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-04</th>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">1</th>\n",
       "      <th>2022-01-01</th>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-02</th>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-03</th>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-04</th>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    target\n",
       "item_id timestamp         \n",
       "0       2022-01-01     1.0\n",
       "        2022-01-02     2.0\n",
       "        2022-01-03     2.0\n",
       "        2022-01-04     3.0\n",
       "1       2022-01-01     4.0\n",
       "        2022-01-02     4.0\n",
       "        2022-01-03     4.0\n",
       "        2022-01-04     5.0"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_filled = df_regular.fill_missing_values()\n",
    "df_filled\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "2f1f2bc5",
   "metadata": {},
   "source": [
    "## How to evaluate forecast accuracy?\n",
    "\n",
    "To measure how accurately `TimeSeriesPredictor` can forecast unseen time series, we need to reserve some test data that won't be used for training.\n",
    "This can be easily done using the `train_test_split` method of a `TimeSeriesDataFrame`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a989f8e2",
   "metadata": {},
   "outputs": [],
   "source": [
    "prediction_length = 48\n",
    "data = TimeSeriesDataFrame.from_path(\"https://autogluon.s3.amazonaws.com/datasets/timeseries/m4_hourly_subset/train.csv\")\n",
    "train_data, test_data = data.train_test_split(prediction_length)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "20bae385",
   "metadata": {},
   "source": [
    "We obtained two `TimeSeriesDataFrame`s from our original data:\n",
    "- `test_data` contains exactly the same data as the original `data`\n",
    "- In `train_data`, the last `prediction_length` time steps are removed from the end of each time series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5fb03059",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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W1uLgwcP4vHHHwcAJCYmApCnYL/00ku49NJLcf3116O+vh4vv/wypk+fjjVr1uC4446Luo9WrFiBYcOGwW63h/39rFmz0KdPHzz00ENYtWoVnnzySVRXV+ONN95g73n22WcxdOhQnHPOObDZbFi8eDFuuukm+P1+zJ07FwDaZT+bxcSJE/Hmm2/id7/7HU4//XRcccUV3Nt44okncMsttyAxMZGJRuTk5Ohaz/bt23HppZfixhtvxPXXX4+BAweiqakJkyZNwqFDh3DjjTeid+/eWLFiBe666y4cOXIkaj+YnrVVV1dj5syZmD17Ni6++GI8++yzmD17Nt5++23MmzcPv//973HZZZfh0UcfxUUXXYQDBw4gKSkJgGzojxs3jjkeWVlZ+N///odrr70WdXV1UUs3N2/ejJkzZ2LEiBG477774HQ6sWvXLixfvpy9x+/345xzzsFPP/2EG264AYMHD8bGjRvx+OOPY8eOHfj444+Dtvntt99i0aJFuPnmm5GZmRlRbETrul988UXceuutuOiii1gwYMOGDVi9ejUuu+yysNvOycnBpEmTsGjRItxzzz1Bv3v33XdhtVpx8cUXAwD27NmDjz/+GBdffDEKCwtRWlqK559/HpMmTcKWLVuQl5cX5chpx4z7o5pRo0bh8ccfx+bNmzFs2DBT1igQCKJABALBMc3cuXOJ+lbw448/EgDk7bffDnrfkiVLgl7/6KOPCADy888/R9x2eXk5AUDuueceTWuZN28eAUBWr17NXisrKyMpKSkEACkuLmavNzU1tfn7G2+8kSQkJJCWlhb22owZM0hBQUGb93q9XuJ2u4Neq66uJjk5OeSaa66Judb8/Hxy4YUXtnn9nnvuIQDIOeecE/T6TTfdRACQ9evXR/0O06dPJ3379mU/t8d+DseVV15JJk2apOtvAZC5c+cGvUb3Qyivvvpqm2M5dOjQsJ/Ns42CggICgCxZsiTovQsWLCAul4vs2LEj6PU777yTWK1Wsn///qjfLdLali1bRgCQZcuWsdcmTZpEAJCFCxey17Zt20YAEIvFQlatWsVe//LLLwkA8uqrr7LXrr32WtKjRw9SUVER9FmzZ88mKSkpYc8XyuOPP04AkPLy8ojvefPNN4nFYiE//vhj0OvPPfccAUCWL1/OXqNr3rx5c5vthJ5rWtd97rnnkqFDh0Zc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igsvvBAffPABNm3a1Ob35eXlUf++qqqqzWuh58msWbNw6NAhvPjii23e29zcjMbGxnZdd2VlZdDvHA4HhgwZAkJIzL6Y1NRUTJ8+HYsWLcI777wDh8OB8847r81aQq+V9957D4cOHYr5PYqKirBt27ag9a5fv75NWZ6Z90fKL7/8gpSUFAwdOjTmOgUCgXFE5kcgEAQxadIk3HjjjXjooYfw22+/Ydq0abDb7di5cyfee+89/N///R8uuugivP7663jmmWdw/vnno6ioCPX19XjxxReRnJyMs846C4BcNjNkyBC8++67GDBgANLT0zFs2LCIcq533HEH3nzzTZxxxhn44x//yKSuCwoKsGHDBva+k046CWlpabjyyitx6623QpIkvPnmm2HLVkaNGoV3330Xt912G0488UQkJibi7LPPxsyZM/Hhhx/i/PPPx4wZM1BcXIznnnsOQ4YMQUNDQ8z9dO6552LBggX4/vvvMW3atDa/Ly4uxjnnnIMzzjgDK1euxFtvvYXLLruMlZFNmzYNDocDZ599Nm688UY0NDTgxRdfRHZ2No4cOcK20x77uSOYNm0aevfujWuvvRa33347rFYrXnnlFWRlZWH//v1B7x01ahSeffZZ3H///ejXrx+ys7Nx2mmncW0jErfffjs+/fRTzJw5E1dddRVGjRqFxsZGbNy4Ee+//z727t0bNSsQaW3twT//+U8sW7YMY8eOxfXXX48hQ4agqqoK69atw9dffx3WwaHcd999+OGHHzBjxgwUFBSgrKwMzzzzDPLz8zFhwgQAwO9+9zssWrQIv//977Fs2TKcfPLJ8Pl82LZtGxYtWsRmJLXXuqdNm4bc3FycfPLJyMnJwdatW/Gf//wHM2bMYHLf0bjkkktw+eWX45lnnsH06dPbDNadOXMm7rvvPlx99dU46aSTsHHjRrz99tvo27dvzG1fc801eOyxxzB9+nRce+21KCsrw3PPPYehQ4eirq6Ovc/M+yNl6dKlOPvss0XPj0DQUXS4vpxAIOhShEpdU1544QUyatQoEh8fT5KSksjw4cPJHXfcQQ4fPkwIIWTdunXk0ksvJb179yZOp5NkZ2eTmTNnkrVr1wZtZ8WKFWTUqFHE4XBokmPesGEDmTRpEomLiyM9e/YkCxYsIC+//HIbaePly5eTcePGkfj4eJKXl0fuuOMOJh+s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",
      "text/plain": [
       "<Figure size 1000x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "item_id = \"H1\"\n",
    "fig, (ax1, ax2) = plt.subplots(nrows=2, figsize=[10, 4], sharex=True)\n",
    "train_ts = train_data.loc[item_id]\n",
    "test_ts = test_data.loc[item_id]\n",
    "ax1.set_title(\"Train data (past time series values)\")\n",
    "ax1.plot(train_ts)\n",
    "ax2.set_title(\"Test data (past + future time series values)\")\n",
    "ax2.plot(test_ts)\n",
    "for ax in (ax1, ax2):\n",
    "    ax.fill_between(np.array([train_ts.index[-1], test_ts.index[-1]]), test_ts.min(), test_ts.max(), color=\"C1\", alpha=0.3, label=\"Forecast horizon\")\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "fa280ab3",
   "metadata": {},
   "source": [
    "We can now use `train_data` to train the predictor, and `test_data` to obtain an estimate of its performance on unseen data.\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(prediction_length=prediction_length, eval_metric=\"MASE\").fit(train_data)\n",
    "predictor.evaluate(test_data)\n",
    "```"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "e3cb1a58",
   "metadata": {},
   "source": [
    "AutoGluon evaluates the performance of forecasting models by measuring how well their forecasts align with the actually observed time series.\n",
    "For each time series in `test_data`, the predictor does the following:\n",
    "\n",
    "1. Hold out the last `prediction_length` values of the time series.\n",
    "2. Generate a forecast for the held out part of the time series, i.e., the forecast horizon.\n",
    "3. Quantify how well the forecast matches the actually observed (held out) values of the time series using the `eval_metric`.\n",
    "\n",
    "Finally, the scores are averaged over all time series in the dataset.\n",
    "\n",
    "The crucial detail here is that `evaluate` always computes the score on the last `prediction_length` time steps of each time series.\n",
    "The beginning of each time series (except the last `prediction_length` time steps) is only used to initialize the models before forecasting.\n",
    "\n",
    "For more details about the evaluation metrics, see [Forecasting Evaluation Metrics](forecasting-metrics.md)."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "f7c5cb98",
   "metadata": {},
   "source": [
    "### Backtesting using multiple windows\n",
    "\n",
    "We can more accurately estimate the performance using **backtest** (i.e., evaluate performance on multiple forecast horizons generated from the same time series).\n",
    "This can be done using an `ExpandingWindowSplitter`.\n",
    "\n",
    "```python\n",
    "from autogluon.timeseries.splitter import ExpandingWindowSplitter\n",
    "\n",
    "splitter = ExpandingWindowSplitter(prediction_length=prediction_length, num_val_windows=3)\n",
    "for window_idx, (train_split, val_split) in enumerate(splitter.split(test_data)):\n",
    "    score = predictor.evaluate(val_split)\n",
    "    print(f\"Window {window_idx}: score = {score}\")\n",
    "```\n",
    "\n",
    "The `evaluate` method will measure the forecast accuracy using the last `prediction_length` time steps of each validation split as a hold-out set (marked in orange).\n",
    "\n",
    "![MultiWindowSplitter splits each original time series into multiple evaluation instances. Forecast is evaluated on the last `prediction_length` timesteps (orange).](https://autogluon-timeseries-datasets.s3.us-west-2.amazonaws.com/public/figures/forecasting-indepth6.png)\n",
    "\n",
    "Multi-window backtesting typically results in more accurate estimation of the forecast quality on unseen data.\n",
    "However, this strategy decreases the amount of training data available for fitting models, so we recommend using single-window backtesting if the training time series are short."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "68f7f14d",
   "metadata": {},
   "source": [
    "### How does AutoGluon perform validation?\n",
    "When we fit the predictor with `predictor.fit(train_data=train_data)`, under the hood AutoGluon further splits the original dataset `train_data` into train and validation parts.\n",
    "\n",
    "Performance of different models on the validation set is evaluated using the `evaluate` method, just like described above.\n",
    "The model that achieves the best validation score will be used for prediction in the end.\n",
    "\n",
    "By default, the internal validation set contains a single window containing the last `prediction_length` time steps of each time series. We can increase the number of validation windows using the `num_val_windows` argument.\n",
    "\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(...)\n",
    "predictor.fit(train_data, num_val_windows=3)\n",
    "```\n",
    "This will reduce the likelihood of overfitting but will increase the training time approximately by a factor of `num_val_windows`.\n",
    "Note that multiple validation windows can only be used if the time series in `train_data` have length of at least `(num_val_windows + 1) * prediction_length`.\n",
    "\n",
    "Alternatively, a user can provide their own validation set to the `fit` method. In this case it's important to remember that the validation score is computed on the last `prediction_length` time steps of each time series.\n",
    "\n",
    "```python\n",
    "predictor.fit(train_data=train_data, tuning_data=my_validation_dataset)\n",
    "```"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Which forecasting models are available in AutoGluon?\n",
    "Forecasting models in AutoGluon can be divided into three broad categories: local, global, and ensemble models.\n",
    "\n",
    "**Local models** are simple statistical models that are specifically designed to capture patterns such as trend or seasonality.\n",
    "Despite their simplicity, these models often produce reasonable forecasts and serve as a strong baseline.\n",
    "Some examples of available local models:\n",
    "\n",
    "- `ETS`\n",
    "- `AutoARIMA`\n",
    "- `Theta`\n",
    "- `SeasonalNaive`\n",
    "\n",
    "If the dataset consists of multiple time series, we fit a separate local model to each time series — hence the name \"local\".\n",
    "This means, if we want to make a forecast for a new time series that wasn't part of the training set, all local models will be fit from scratch for the new time series.\n",
    "\n",
    "**Global models** are machine learning algorithms that learn a single model from the entire training set consisting of multiple time series.\n",
    "Most global models in AutoGluon are provided by the [GluonTS](https://ts.gluon.ai/stable/) library.\n",
    "These are neural-network algorithms implemented in PyTorch, such as:\n",
    "\n",
    "- `DeepAR`\n",
    "- `PatchTST`\n",
    "- `DLinear`\n",
    "- `TemporalFusionTransformer`\n",
    "\n",
    "AutoGluon also offers two tabular global models `RecursiveTabular` and `DirectTabular`.\n",
    "Under the hood, these models convert the forecasting task into a regression problem and use a [TabularPredictor](../../api/autogluon.tabular.TabularPredictor.rst) to fit regression algorithms like LightGBM.\n",
    "\n",
    "Finally, an **ensemble** model works by combining predictions of all other models.\n",
    "By default, `TimeSeriesPredictor` always fits a `WeightedEnsemble` on top of other models.\n",
    "This can be disabled by setting `enable_ensemble=False` when calling the `fit` method.\n",
    "\n",
    "For a list of tunable hyperparameters for each model, their default values, and other details see [Forecasting Model Zoo](forecasting-model-zoo.md)."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "843edca6",
   "metadata": {},
   "source": [
    "\n",
    "## What functionality does `TimeSeriesPredictor` offer?\n",
    "AutoGluon offers multiple ways to configure the behavior of a `TimeSeriesPredictor` that are suitable for both beginners and expert users.\n",
    "\n",
    "### Basic configuration with `presets` and `time_limit`\n",
    "We can fit `TimeSeriesPredictor` with different pre-defined configurations using the `presets` argument of the `fit` method.\n",
    "\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(...)\n",
    "predictor.fit(train_data, presets=\"medium_quality\")\n",
    "```\n",
    "\n",
    "Higher quality presets usually result in better forecasts but take longer to train.\n",
    "The following presets are available:\n",
    "\n",
    "| Preset         | Description                                          | Use Cases                                                                                                                                               | Fit Time (Ideal) | \n",
    "| :------------- | :----------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------- | \n",
    "| `fast_training`  | Fit simple statistical and baseline models + fast tree-based models   | Fast to train but may not be very accurate   |  0.5x |\n",
    "| `medium_quality` | Same models as in `fast_training` + deep learning model `TemporalFusionTransformer`           | Good forecasts with reasonable training time         | 1x             |\n",
    "| `high_quality`   | More powerful deep learning, machine learning, and statistical forecasting models   | Much more accurate than ``medium_quality``, but takes longer to train | 3x |\n",
    "| `best_quality`   | Same models as in `high_quality`, more cross-validation windows | Typically more accurate than `high_quality`, especially for datasets with few (<50) time series | 6x             |\n",
    "\n",
    "You can find more information about the [presets](https://github.com/autogluon/autogluon/blob/stable/timeseries/src/autogluon/timeseries/configs/presets_configs.py) and the [models includes in each preset](https://github.com/autogluon/autogluon/blob/stable/timeseries/src/autogluon/timeseries/models/presets.py#L109) in the AutoGluon source code.\n",
    "\n",
    "Another way to control the training time is using the `time_limit` argument.\n",
    "\n",
    "```python\n",
    "predictor.fit(\n",
    "    train_data,\n",
    "    time_limit=60 * 60,  # total training time in seconds\n",
    ")\n",
    "```\n",
    "\n",
    "If no `time_limit` is provided, the predictor will train until all models have been fit.\n",
    "\n",
    "\n",
    "### Manually configuring models\n",
    "Advanced users can override the presets and manually specify what models should be trained by the predictor using the `hyperparameters` argument.\n",
    "\n",
    "```python\n",
    "predictor = TimeSeriesPredictor(...)\n",
    "\n",
    "predictor.fit(\n",
    "    ...\n",
    "    hyperparameters={\n",
    "        \"DeepAR\": {},\n",
    "        \"Theta\": [\n",
    "            {\"decomposition_type\": \"additive\"},\n",
    "            {\"seasonal_period\": 1},\n",
    "        ],\n",
    "    }\n",
    ")\n",
    "```\n",
    "\n",
    "The above example will train three models:\n",
    "\n",
    "* ``DeepAR`` with default hyperparameters\n",
    "* ``Theta`` with additive seasonal decomposition (all other parameters set to their defaults)\n",
    "* ``Theta`` with seasonality disabled (all other parameters set to their defaults)\n",
    "\n",
    "You can also exclude certain models from the presets using the `excluded_model_type` argument.\n",
    "```python\n",
    "predictor.fit(\n",
    "...\n",
    "presets=\"high_quality\",\n",
    "excluded_model_types=[\"AutoETS\", \"AutoARIMA\"],\n",
    ")\n",
    "```\n",
    "\n",
    "For the full list of available models and the respective hyperparameters, see [Forecasting Model Zoo](forecasting-model-zoo.md).\n",
    "\n",
    "### Hyperparameter tuning\n",
    "\n",
    "Advanced users can define search spaces for model hyperparameters and let AutoGluon automatically determine the best configuration for the model.\n",
    "\n",
    "```python\n",
    "from autogluon.common import space\n",
    "\n",
    "predictor = TimeSeriesPredictor()\n",
    "\n",
    "predictor.fit(\n",
    "train_data,\n",
    "hyperparameters={\n",
    "    \"DeepAR\": {\n",
    "        \"hidden_size\": space.Int(20, 100),\n",
    "        \"dropout_rate\": space.Categorical(0.1, 0.3),\n",
    "    },\n",
    "},\n",
    "hyperparameter_tune_kwargs=\"auto\",\n",
    "enable_ensemble=False,\n",
    ")\n",
    "```\n",
    "\n",
    "This code will train multiple versions of the `DeepAR` model with 10 different hyperparameter configurations.\n",
    "AutGluon will automatically select the best model configuration that achieves the highest validation score and use it for prediction.\n",
    "\n",
    "Currently, HPO is based on random search for all time series models.\n",
    "\n",
    "We can change the number of random search trials per model by passing a dictionary as `hyperparameter_tune_kwargs`\n",
    "\n",
    "```python\n",
    "predictor.fit(\n",
    "...\n",
    "hyperparameter_tune_kwargs={\n",
    "    \"num_trials\": 20,\n",
    "    \"scheduler\": \"local\",\n",
    "    \"searcher\": \"random\",\n",
    "},\n",
    "...\n",
    ")\n",
    "```\n",
    "\n",
    "The `hyperparameter_tune_kwargs` dict must include the following keys:\n",
    "\n",
    "- ``\"num_trials\"``: int, number of configurations to train for each tuned model\n",
    "- ``\"searcher\"``: currently, the only supported option is ``\"random\"`` (random search).\n",
    "- ``\"scheduler\"``: currently, the only supported option is ``\"local\"`` (all models trained on the same machine)\n",
    "\n",
    "**Note:** HPO significantly increases the training time for most models, but often provides only modest performance gains."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ag",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
